.TH lcm-gen 1 2007-12-13 "LCM" "Lightweight Communications and Marshalling (LCM)"
.SH NAME
lcm-gen \- code generation tool.
.SH SYNOPSIS
.TP 5
\fBlcm-gen \fI[options]\fR \fIFILE\fR...

.SH DESCRIPTION
.PP
\fBlcm-gen\fR is the Lightweight Communications and Marshalling code generation
utility.  It takes as input one or more \fB.lcm\fR files containing LCM message
type definitions, and generates language-specific bindings for marshalling and
unmarshalling messages of the specified types.

Currently, \fBlcm-gen\fR is capable of generating language bindings for C, C++,
Java, Python, Lua, and C#.

.SH GENERAL OPTIONS
.TP
.B \-h
Prints some help text and exits.
.TP
.B \-t, \-\-tokenize
Show tokenization.
.TP
.B \-d, \-\-debug
Show parsed files.
.TP
.B \-\-lazy
Generate output file only if .lcm is newer than output file (or if output file
does not already exist).
.TP
.B \-\-package\-prefix \fIPFX\fR
Add package name \fIPFX\fR as a prefix to the declared package.
.TP
.B \-\-version
Shows version information and exits.

.SH C OPTIONS
.TP
.B \-c, \-\-c
Emit C code.
.TP
.B \-\-c-cpath \fIDIR\fR
Destination directory for generated .c files. (default: current directory)
.TP
.B \-\-c-hpath \fIDIR\fR
Destination directory for generated .h files. (default: current directory)
.TP
.B \-\-cinclude \fIDIR\fR
Generated #include lines reference this directory
.TP
.B \-\-c-no-pubsub \fIDIR\fR
Do not generate _publish and _subscribe functions.  This results in .c and .h
files that have no linking dependencies and can be used for just marshalling,
separately from liblcm.  They still #include <lcm/lcm_coretypes.h>, so
you will need to copy that file to the appropriate include path.
.TP
.B \-\-c\-typeinfo
Generate typeinfo functions for each type (experimental).

.SH C++ OPTIONS
.TP
.B \-x, \-\-cpp
Emit C++ code.
.TP
.B \-\-cpp-hpath \fIDIR\fR
Destination directory for generated .hpp files. (default: current directory)
.TP
.B \-\-cpp-include \fIDIR\fR
Generated C++ #include lines reference this directory

.SH JAVA OPTIONS
.TP
.B \-j, \-\-java
Emit Java code.
.TP
.B \-\-jpath \fIDIR\fR
Destination base directory for generated Java files. (default: current
directory)
.TP
.B \-\-jmkdir <true|false>
Automatically create Java source directories (default: true)
.TP
.B \-\-jdecl \fISTR\fR
String added to class declarations (default: implements lcm.lcm.LCMEncodable)
.TP
.B \-\-jdefaultpkg \fIPKG\fR
Default Java package if LCM type has no package (default: lcmtypes)

.SH PYTHON OPTIONS
.TP
.B \-p, \-\-python
Emit Python code.
.TP
.B \-\-ppath \fIDIR\fR
Destination base directory for generated Python files. (default: current
directory)

.SH LUA OPTIONS
.TP
.B \-l, \-\-lua
Emit Lua code.
.TP
.B \-\-lpath \fIDIR\fR
Lua destination directory.

.SH C#.NET OPTIONS
.TP
.B \-\-csharp
Emit C#.NET code
.TP
.B \-\-csharp-path \fIDIR\fR
C#.NET destination directory
.TP
.B \-\-csharp-mkdir <true|false>
Make C#.NET source directories automatically (default: true)
.TP
.B \-\-csharp-strip-dirs <true|false>
Do not generate folders for default and root namespace (default: false)
.TP
.B \-\-csharp-decl \fISTR\fR
String added to class declarations (default: " : LCM.LCM.LCMEncodable")
.TP
.B \-\-csharp-root-nsp \fINSP\fR
Root C#.NET namespace (wrapper) added before LCM package (default: "")
.TP
.B \-\-csharp-default-nsp \fINSP\fR
Default C#.NET namespace if LCM type has no package (default: LCMTypes)

.SH COPYRIGHT

lcm-gen is part of the Lightweight Communications and Marshalling (LCM) project.
Permission is granted to copy, distribute and/or modify it under the terms of
the GNU Lesser General Public License as published by the Free Software
Foundation; either version 2.1 of the License, or (at your option) any later
version.  See the file COPYING in the LCM distribution for more details
regarding distribution.

LCM is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with LCM; if not, write to the Free Software Foundation, Inc., 51
Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA

.SH AUTHOR

This manual page was written by Albert Huang.
